/*
 * ISearchVisitor.java Copyright 2004 Paul Mukherjee
 */
package org.nanhill.support.hibernate.search.demo.filesearch;

import org.nanhill.commons.pattern.search.SearchException;
import org.nanhill.commons.pattern.search.SearchVisitor;

/**
 * @author pmu
 * @version $Revision: 1.3 $
 * 
 * Interface to be implemented by all search visitors.
 */

public interface VolumeSearchVisitor extends SearchVisitor {
	/**
	 * Visits a SearchVolumeName search criterion.
	 * 
	 * @param volumeName
	 *            The search criterion to visit.
	 * @throws SearchException
	 *             If a problem occurred during the visit.
	 */
	public void visitVolumeName(SearchVolumeName volumeName)
			throws SearchException;

	/**
	 * Visits a SearchFilename search criterion.
	 * 
	 * @param filename
	 *            The search criterion to visit.
	 * @throws SearchException
	 *             If a problem occurred during the visit.
	 */
	public void visitFilename(SearchFilename filename) throws SearchException;

	/**
	 * Visits a SearchStartFileDate search criterion.
	 * 
	 * @param date
	 *            The search criterion to visit.
	 * @throws SearchException
	 *             If a problem occurred during the visit.
	 */
	public void visitStartFileDate(SearchStartFileDate date)
			throws SearchException;

	/**
	 * Visits a SearchEndFileDate search criterion.
	 * 
	 * @param date
	 *            The search criterion to visit.
	 * @throws SearchException
	 *             If a problem occurred during the visit.
	 */
	public void visitEndFileDate(SearchEndFileDate date) throws SearchException;

	/**
	 * Visits a SearchKeyword search criterion.
	 * 
	 * @param keyword
	 *            The search criterion to visit.
	 * @throws SearchException
	 *             If a problem occurred during the visit.
	 */
	public void visitKeyword(SearchKeyword keyword) throws SearchException;

}
